import { createStore } from 'vuex'
import { login,getinfo } from '~/api/manager'
import { setToken,removeToken } from '~/composables/auth'


// 创建一个新的 store 实例
const store = createStore({
    state () {
        return {
            //用户信息
            user: {},

            // 侧边宽度
            asideWidth:"250px",

            menus:[],

            pdfData: {},

            config: {}
        }
    },
    mutations: {
        SET_USERINFO(state, user) {
            state.user = user
        },
        // 展开/缩起侧边
        handleAsideWidth(state){
            state.asideWidth = state.asideWidth == "250px" ? "64px" : "250px"
        },
        SET_MENUS(state,menus){
            state.menus = menus
        },
        SET_PDFDATA(state, pdfData) {
            state.pdfData = pdfData
        }
    },
    actions:{
        // 登录
        login({ commit }, { telephone,password,role }){
            return new Promise((resolve,reject)=>{
                login(telephone,password,role).then(res=>{
                    if(res.data.code === "200") {
                        setToken(res.data.data.token)
                    }
                    resolve(res)
                }).catch(err=>reject(err))
            })
        },
        // 获取当前登录用户信息
        getinfo({ commit }){
            return new Promise((resolve,reject)=>{
                getinfo().then(res=>{
                    if(res.data.code === "200") {
                        commit("SET_USERINFO",res.data.data)
                        commit("SET_MENUS",res.data.data.menus)
                    } else {
                        // 移除cookie里的token
                        removeToken()
                        // 清除当前用户状态 vuex
                        commit("SET_USERINFO",{})
                    }
                    resolve(res)
                }).catch(err=>reject(err))
            })
        },
        // 退出登录
        logout({ commit }){
            // 移除cookie里的token
            removeToken()
            // 清除当前用户状态 vuex
            commit("SET_USERINFO",{})
        }
    }
})

export default store
